#ifndef FRUSTUM_H
#define FRUSTUM_H

#define FIRST_OBJECT_ID  3	

enum frustumSide
{
	RIGHT	= 0,
	LEFT	= 1,
	BOTTOM	= 2,
	TOP		= 3,
	BACK	= 4,
	FRONT	= 5
};

enum planeData
{
	A = 0,
	B = 1,
	C = 2,
	D = 3
};

class Frustum
{
	public:
		void calculateFrustum();
		bool pointInFrustum(float x, float y, float z);
		bool sphereInFrustum(float x, float y, float z, float radius);
		bool cubeInFrustum(float x, float y, float z, float size);
		bool boxInFrustum(float x, float y, float z, float x2, float y2, float z2);

	private:
		// this holds the A B C and D values for each side of the frustum
		float frustum[6][4];
		void normalizePlane(float frustum[6][4], int side);
};

#endif /*FRUSTUM_H*/